% Sobel算子边缘检测
function edge_img = sobel_edge_detection(img)
    % 转换为灰度图像
    gray_img = rgb2gray(img);
    
    % 定义Sobel算子的卷积核
    Gx = [-1 0 1; -2 0 2; -1 0 1];  % 水平方向
    Gy = [-1 -2 -1; 0 0 0; 1 2 1];  % 垂直方向
    
    % 对图像进行卷积操作
    Ix = imfilter(double(gray_img), Gx, 'replicate');  % 水平梯度
    Iy = imfilter(double(gray_img), Gy, 'replicate');  % 垂直梯度
    
    % 计算梯度幅值
    edge_img = sqrt(Ix.^2 + Iy.^2);
    
    % 将边缘图像归一化到 [0, 1] 范围
    edge_img = mat2gray(edge_img);
end
